package com.xxxx.yoyo.service;

import java.util.List;

import com.xxxx.yoyo.bean.Goods;

/**
 * 这是宠物服务接口 提供宠物的各种服务
 * @author 28993
 *
 */
public interface IGoodsService {
	
	/**
	 * 根据榜单type查询宠物列表
	 * @param type 值为1表示今日推荐, 值为2表示热销 值为3表示新品
	 * @return 返回查询到的宠物列表
	 */
	List<Goods> getGoodsListByHotType(int type);
	
	
	/**
	 * 根据宠物分类的id查询宠物列表
	 * @param typeId 宠物分类的id
	 * @return 返回查到的宠物列表
	 */
	List<Goods> getGoodsListByTypeId(int typeId);

	/**
	 * 根据宠物分类的id,页码以及每页条数查询宠物列表
	 * @param typeId 宠物分类的id
	 * @param page 页码
	 * @param size 每页条数
	 * @return 返回查到的宠物列表
	 */
	List<Goods> getGoodsListByTypeId(int typeId, int page, int size);
	
	
	/**
	 * 根据宠物类型的id,查询宠物的个数
	 * @param typeId 宠物类型的id
	 * @return 返回对应分类下宠物的条数
	 */
	long getGoodsCountByTypeId(int typeId);
	
	
	/**
	 * 根据榜单type,page,size查询宠物列表
	 * @param type 值为1表示今日推荐, 值为2表示热销 值为3表示新品
	 * @param page 当前页码
	 * @param size 每页的条数
	 * @return 返回查询到的宠物列表
	 */
	List<Goods> getGoodsListByHotType(int type, int page, int size);
	
	/**
	 * 根据榜单类型,查询宠物的个数
	 * @param type 榜单类型 1表示今日推荐, 值为2表示热销 值为3表示新品
	 * @return 返回对应榜单下宠物的条数
	 */
	long getGoodsCountByHotType(int type);
	
	
	/**
	 * 按关键字keyword,page,size查询宠物列表
	 * @param keyword 宠物关键字
	 * @param page 页码
	 * @param size 每页条数
	 * @return 返回查询到的结果
	 */
	List<Goods> getGoodsListByKeyword(String keyword, int page, int size);
	
	
	/**
	 * 查询包含指定关键字的宠物的个数
	 * @param keyword 宠物关键字
	 * @return 返回包含指定关键字的宠物的数量
	 */
	long getGoodsCountByKeyword(String keyword);
	
	
	/**
	 * 根据宠物的id查询宠物
	 * @param id 宠物的id
	 * @return 返回查询到的宠物
	 */
	Goods getGoodsById(int id);
	
	/**
	 * 根据分页信息获取宠物列表
	 * @param page 页码
	 * @param size 每页条数
	 * @return 返回查到的宠物列表
	 */
	List<Goods> getGoodsList(int page, int size);
	
	/**
	 * 获取宠物总数量
	 * @return 返回宠物总数量
	 */
	long getGoodsCount();
	
	/**
	 * 添加宠物
	 * @param goods 宠物
	 * @return 添加成功返回true，失败返回false
	 */
	boolean addGoods(Goods goods);
	
	/**
	 * 根据宠物的id删除宠物
	 * @param goodsId 宠物id
	 * @return 删除成功返回true，失败返回false
	 */
	boolean deleteGoodsById(int goodsId);
	
	/**
	 * 更新宠物信息
	 * @param goods 宠物信息
	 * @return 成功返回true，失败返回false
	 */
	boolean updateGoods(Goods goods);
	
}
